The present invention relates to data transmission and especially to a method for transferring a data packet from a compressor to a decompressor, said data packet including a header with header data fields, a number of the header data fields that remain constant during the data transfer being stored in the decompressor. The method comprises sending from the compressor and receiving at the decompressor a data packet comprising information on one or more header data fields that vary during the data transfer; and decompressing the header using the stored header data fields and the received information on the one or more header data fields that vary during the data transfer. The invention also relates to access network elements implementing the invented method.
Real time services constitute an emerging set of technologies that enable voice, data and video collaboration over packet switched networks. Along the standardisation of packet switched radio systems interest in providing real time services also through wireless networks has risen. In real time services packet transmission is carried out using a number of protocols. This introduces a large protocol overhead and causes inefficient bandwidth usage. As the transmission rates in wireless systems are limited, transferring of large headers mean wasteful use of capacity.
To overcome the problem of large headers, a variety of header compression schemes have been introduced. Publication xe2x80x9cCompressing IP/UDP/RTP Headers for Low-Speed Serial Linksxe2x80x9d by S. Casner and V. Jacobson, Intemet Engineering Task Force, INTERNET-DRAFT, draft-ietf-avt-crtp-05.txt, July 1998 presents effective header compression algorithms that enable header size reduction by a magnitude. The presented header compression is based on the fact that some of the bytes in the IP, UDP and RTP headers remain constant over the life of the connection. After sending an uncompressed header these fields may be elided from the compressed headers that follow. Furthermore, differential coding is used on the changing fields to reduce their size. In RTP header the difference from packet to packet is often constant and therefore also the second order difference is zero. By maintaining both the uncompressed header and the first order differences in the session state shared between the compressor and decompressor, it is mainly necessary to indicate that the second order difference between successive packets is zero. It is also suggested that a compressor implementation might maintain state for multiple session contexts. Using a hash function on certain predefined fields to index a table of stored session contexts, and including a session context identifier in compressed packets would enable the decompressor to index a table of stored session contexts directly.
Real time services cause strict limits for transmission delays and therefore normal retransmission procedures (e.g. in Transport Control Protocol, TCP generally used for transmission of IP packets) are generally not applicable. Thus, a link in real time services in practice will be considered a simplex link. In the prior art reference, for simplex links a periodic refresh scheme is suggested. Whenever the decompressor detects an error in a packet stream, it discards all packets in that stream, and will not resume decompression until a regularly transmitted uncompressed header (refresh header) is received. This means that after a transmission error all packets until the next refresh packet are lost. In transmission links where errors occur relatively seldom this does not have much effect on the transmission throughput. Anyhow, when a link with high risk of multiple transmission errors is involved, the effect is disruptive. This is especially the case with wireless transmissions.
A publication xe2x80x9cLow-loss TCP/IP header compression for wireless networksxe2x80x9dn by Mikael Degermark, Mathias Engan, Bjxc3x6rn Nordgren and Stephen Pink, Wireless Networks 3 (1997) 375-387, J. C. Balzer A G, Science Publishers presents header compression schemes for UDP/IP and TCP/IP protocol where the problem of simplex links and lossy links have been dealt with. In the presented system the compressor sends a full header and a compression identifier, which is a small unique number also carried by compressed headers. The full header is stored as a compression state by the decompressor. The compression identifiers in compressed headers are used to lookup the appropriate compression state to use for decompression. To avoid incorrect decompression due to inconsistent compression state some further mechanisms are introduced. Each version of the compression state is associated with a generation, represented by a number, carried by full headers that install or refresh that compression state and in headers that were compressed using it. Thus the decompressor is able to detect when its compression state is out of date by comparing its generation to the generation in compressed headers. Furthermore, to avoid long periods of packet discard when full headers are lost and on the other hand to get as high compression rates as possible, the compressor starts with a short interval between full headers, and the refresh interval is exponentially increased with each refresh until a steady state refresh period is reached (compression slow-start). A modest trade-off of some header compression is also suggested.
Though the use of compression state generation facilitates easier detection of inconsistent compression states, the packets will anyhow be lost until a full header installs a proper compression state. Compression slow-start helps finding a convenient trade-off between the compression rate and acceptable recovery time, but in difficult transmission conditions, the compression rate will anyhow be compromised and the advantage of header compression will be diminish.
Now a method and network elements implementing the method have been invented, with the help of which these problems can be avoided or their effect can be reduced.
According to a first aspect of the present invention there is provided a method for transferring a data packet from a compressor to a decompressor said data packet including a header with header data fields, a number of the header data fields that remain constant during the data transfer being stored in the decompressor. The method comprises sending from the compressor and receiving at the decompressor a data packet comprising information on one or more header data fields that vary during the data transfer; decompressing the header using the stored header data fields and the received information on the one or more header data fields that vary during the data transfer. The method is characterised by sending from the compressor and receiving at the decompressor a compressed value for a header data field, said compressed value identifying the data packet in a compression sequence; maintaining in the decompressor context data comprising information for relating the received compressed value to a corresponding compression sequence, the information being updated according to the received compressed values; and using the compressed value and the information of the corresponding compression sequence for mapping the compressed value into a decompressed header data field.
The advantage of the invention is based on the fact that most of the fields in the network layer packet remain constant throughout a session. Network layer in this context refers to packet data network level protocol layers, referring to e.g. IP, UDP and RTP protocols. Furthermore, it is appreciated that changes in the fields that vary from packet to packet are predictable. Such fields are sent in a compressed form to the decompressor. Based on the prior knowledge of the anticipated changes, the decompressor will generate and maintain context data that is updated with the information from the packets that are received in the decompressor. Compressed data maps unambiguously to a change in a decompressed value in a set of consecutive data packets, a compression sequence. In the context data, information on one or more compression sequences is maintained. This information provides means for associating the received compressed data with a correct compression sequence. Using the received compressed data with the corresponding context data maintained in the decompressor enables the compressed data to be unambiguously mapped to a full packet data header field in the decompressor side throughout the session. Preferably, data packets carrying information that can not be correctly associated with any of the compression sequences of the context data maintained in the decompressor are filtered out already in the compressor side. Compared to the earlier solutions, the compression in the invented method is increased since also the varying fields that are related to identification of packets can be compressed. Still, transmission errors will have effect only on transmission of individual packets and problems in transmission of one packet do not escalate to subsequent packets. The scheme of refreshing complete header information can be designed to occur at longer intervals, or it can be abandoned altogether. Further aspects of the invention are presented in the independent claims 9, 13 and 15. Preferred embodiments are presented in the dependent claims.